package cn.chen.数据结构.哈希表;

// 存放员工的链表
public class EmpLinkedList {

    private Emp head;

    // 添加元素到链表
    public void addEmp(Emp emp){

        if(isEmpty())
            head=emp;
        else {

            Emp temp=head;
            while (temp.next!=null)
                temp=temp.next; // 循环遍历到链表尾

            temp.next=emp;  // 将该元素加入到链表尾
        }
    }
    // 删除元素
    public Emp removeEmp(int id){

        Emp remove=null;
        if(isEmpty()){

            System.out.println("链表为空");
            return null;
        }
        Emp temp=head;
        if(temp.id==id) {// 判断元素是否是链表头第一个元素

            remove=temp;
            head = temp.next;
            return remove;
        }

        while (true){

            if(temp.next==null)
                break;
            if(temp.next.id==id){

                remove=temp.next;
                temp.next=temp.next.next;   // 将temp的下一个节点删除，直接将temp的下一个节点指向下下个节点
                return remove;
            }
            temp=temp.next;
        }
        return null;
    }
    // 查询元素
    public Emp getEmp(int id){

        if(isEmpty()){

            System.out.println("链表没有元素");
            return null;
        }
        Emp temp=head;
        while (true){

            if(temp.id==id)
                return temp;

            if(temp.next==null)
                break;
            temp=temp.next;
        }
        return null;
    }
    // 显示链表的所有元素
    public void showEmps(){

        if(isEmpty()) {
            System.out.println("该链表尾空，没有元素");
            return;
        }
        Emp temp=head;
        while (true){

            System.out.println(temp.toString());    // 先显示该元素，再判断是否后移
            if(temp.next==null)
                break;

            temp=temp.next;
        }
    }
    public boolean isEmpty(){

        return head==null;
    }

}
